package com.zhang.spring.d_springaop;

import org.aspectj.lang.ProceedingJoinPoint;
import org.springframework.stereotype.Component;

//通知类
@Component("userAdvice")
public class myAdvice {
	//前置通知--目标方法之前调用
	//后置通知（如果出现异常不会调用）----目标方法之后调用
	//环绕通知----在目标方法之前和之后调用
	//异常拦截通知---有异常调用
	//后置通知（无论是否有异常都会调用）----目标方法之后调用
	public void befor(){
		System.out.println("这是前置增强");
	};
	public void afterReturning(){
		System.out.println("这是后置通知----出现异常不会调用");
	}
	public Object around(ProceedingJoinPoint pjp) throws Throwable{
		System.out.println("这是环绕通知之前的部分");
		Object proceed = pjp.proceed();//调用目标方法
		System.out.println("这是环绕通知之后的部分");
		return proceed;
	} 
	public void afterException(){
		System.out.println("这是异常通知-----有异常调用");
	} 
	public void after(){
		System.out.println("后置增强---出现异常调用");
		
	}
}
